package com.zw.commons.utlis;/*
 *@program:java-cloud-prevalence
 *@author:
 *@Time: 2022/12/7  20:15
 *@description: 菜单构建树形接口
 */


import com.zw.object.system.SysMenu;

import java.util.ArrayList;
import java.util.List;

public class MenuHelper {


   /**
    *                      使用递归构建菜单
    * @param sysMenuList   全部的菜单集合
    * @return              树形结构菜单
    */
   public static List<SysMenu> buildTree(List<SysMenu> sysMenuList){
      ArrayList<SysMenu> trees = new ArrayList<>();
      sysMenuList.forEach(menu -> {
//         寻找递归入口
         if("0".equals(menu.getParentId())) {
//            寻找子节点
            trees.add(findChildren(menu, sysMenuList));
         }
      });
      return trees;
   }

   /**+
    *                   递归查找子节点
    * @param node       当前节点
    * @param treeNodes  全部的节点
    * @return           树形节点
    */
   private static SysMenu findChildren(SysMenu node, List<SysMenu> treeNodes) {
      node.setChildren(new ArrayList<>());
      treeNodes.forEach(menuNode -> {
         if(node.getId().equals(menuNode.getParentId())){
            if(node.getChildren()==null){
               node.setChildren(new ArrayList<>());
            }
            node.getChildren().add(findChildren(menuNode,treeNodes));
         }
      });
      return node;
   }

}
